import QiniuUPToken from "qiniu-uptoken"
import axios from "axios"

/**
 * 创建axios实例
 * withCredentials 禁止携带cookie，带cookie在七牛* 上有可能出现跨域问题
 */
const axiosInstance = axios.create({
    withCredentials: false
})

/**
 * 七牛云相关信息配置
 * 请填入自己的相关信息
 */
const config = {
    access_key: '', // 在个七牛个人中心，秘钥管理
    secret_key: '', // 在个七牛个人中心，秘钥管理
    bucketname: '', // 空间名称，创建空间时填的名称
    domain: '', // 空间域名，例如http://qdkcnpk3v.bkt.clouddn.com/，结尾要带/
    region: 'ECN' // 空间区域，填入创建空间所在区域，默认华东
}

/**
 * 生成七牛上传token
 */
const uptoken = QiniuUPToken(config.access_key, config.secret_key, config.bucketname)

/**
 * 七牛云的存储对象的地区对应表
 */
const regions = {
    'ECN': 'http://up.qiniup.com', // z0 ECN 华东
    'NCN': 'http://up-z1.qiniup.com', // z1 NCN 华北
    'SCN': 'http://up-z2.qiniup.com', // z2 SCN 华南
    'NA': 'http://up-na0.qiniup.com', // na0 NA 北美
    'SEA': 'http://upload-na0.qiniup.com' // as0 SEA 东南亚
}

/**
 *  上传
 *  file 文件路径
 */
export default (file) => {
    // 创建FormData
    let data = new FormData()
    data.append('token', uptoken)
    data.append('file', file)

    return new Promise((resolve, reject) => {
        axiosInstance({
            method: 'POST',
            url: regions[config.region],
            data: data
        }).then(res => {
            // 上传成功
            resolve(config.domain + res.data.key)
        }).catch(err => {
            // 上传失败
            reject(err)
        })
    })
}